﻿using System;
using CrateMayhem.Common.Model;

namespace CrateMayhem.Common.Services
{
    public interface IGameService : IService
    {
        event EventHandler<PushEventArgs> Push;
        event EventHandler<PushCompletedEventArgs> PushCompleted;
        event EventHandler Finished;
        event EventHandler Retry;
        event EventHandler<PushEventArgs> Undo;

        World Find(int level);
        void RaisePush(MoveType move);
        void RaisePushCompleted(bool pushed, MoveType move);
        void RaiseFinished();
        void RaiseRetry();
        void RaiseUndo(MoveType move);
    }
}